import { RouteRecordRaw } from "vue-router";
import Layout from '@/layout/Index.vue';

/*
   常量路由：所有账号都能够访问
*/
export const constantRoutes: Array<RouteRecordRaw> = [
  {
    // 后端需要返回，但是前端需要给隐藏
    path: "/:pathMatch(.*)*", // 路由访问路径没有，默认跳转404
    name: "ANY",
    meta: {
      title: "重定向404", // 标题
      icon: "MoreFilled", // 图标
      hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    redirect: "/404", // path路径，<router-link name="/404"> 也是使用path进行跳转
  },
  {
    path: "/404", // 路由访问路径（唯一）
    name: "404", // 命名路由（唯一）
    component: () => import("@/views/error/koi404.vue"),
    meta: {
      title: "404", // 标题
      icon: "CircleCloseFilled", // 图标
      hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
  },
  /** 登录 */
  {
    path: "/login", // 路由访问路径（唯一）
    name: "login", // 命名路由（唯一）
    component: () => import("@/views/Login.vue"),
    meta: {
      title: "登录",
      icon: "Promotion", // 图标
      hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
  },
  {
    // 登录成功以后展示数据的路由[一级路由，可以将子路由放置Main模块中(核心)]
    path: "/", // 路由访问路径（唯一）
    name: "layout", // 命名路由（唯一）
    component: Layout, // 登录进入这个页面，这个页面是整个布局
    meta: {
      title: "", // 标题
      icon: "Sunny", // 图标
      hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    redirect: "/home", // path路径，<router-link name="/404"> 也是使用path进行跳转
    children: [
      {
        path: "/home", // （唯一）
        component: () => import("@/views/home/Index.vue"),
        meta: {
          title: "首页", // 标题
          icon: "HomeFilled", // 图标
          hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
    ],
  },
  /** 首页 */
  {
    path: "/home", // （唯一）
    component: () => import("@/views/home/Index.vue"),
    meta: {
      title: "首页", // 标题
      icon: "HomeFilled", // 图标 HomeFilled
      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
  },

  /** 异常页面 */
  {
    path: "/error", // （唯一）
    component: Layout,
    redirect: "/error/403", // path路径，<router-link name="/404"> 也是使用path进行跳转
    meta: {
      title: "异常页面", // 标题
      icon: "WarnTriangleFilled", // 图标
      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    children: [
      {
        path: "/error/403", // 路由访问路径（唯一）
        name: "error-403", // 命名路由（唯一）
        component: () => import("@/views/error/403.vue"),
        meta: {
          title: "403", // 标题
          icon: "QuestionFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/error/404", // 路由访问路径（唯一）
        name: "error-404", // 命名路由（唯一）
        component: () => import("@/views/error/404.vue"),
        meta: {
          title: "404", // 标题
          icon: "CircleCloseFilled", // 菜单图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/error/500", // 路由访问路径（唯一）
        name: "error-500", // 命名路由（唯一）
        component: () => import("@/views/error/500.vue"),
        meta: {
          title: "500", // 标题
          icon: "WarningFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
    ],
  },

  /** 系统管理 */
  {
    path: "/system", // 路由访问路径（唯一）
    // name: "system", // 命名路由（唯一）
    component: Layout, // 一级路由，可以将子路由放置Main模块中
    redirect: "/system/user", // path路径，<router-link name="/404"> 也是使用path进行跳转
    meta: {
      title: "系统管理", // 标题
      icon: "Tools", // 图标
      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    children: [
      {
        path: "/system/user", // （唯一）
        component: () => import("@/views/system/user/Index.vue"),
        meta: {
          title: "用户管理", // 标题
          icon: "UserFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/role", // （唯一）
        component: () => import("@/views/system/role/Index.vue"),
        meta: {
          title: "角色管理", // 标题
          icon: "CameraFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/menu", // （唯一）
        component: () => import("@/views/system/menu/Index.vue"),
        meta: {
          title: "菜单管理", // 标题
          icon: "Menu", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dict/type", // （唯一）
        component: () => import("@/views/system/dict/Type.vue"),
        meta: {
          title: "字典管理", // 标题
          icon: "Management", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dict/data/:dictType", // （唯一）
        component: () => import("@/views/system/dict/Data.vue"),
        meta: {
          title: "字典详情", // 标题
          icon: "Flag", // 图标
          hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dept", // （唯一）
        component: () => import("@/views/system/dept/Index.vue"),
        meta: {
          title: "部门管理", // 标题
          icon: "Histogram", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/notice", // （唯一）
        component: () => import("@/views/system/notice/Index.vue"),
        meta: {
          title: "通知公告", // 标题
          icon: "ChatLineRound", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/post", // （唯一）
        component: () => import("@/views/system/post/Index.vue"),
        meta: {
          title: "岗位管理", // 标题
          icon: "Postcard", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/loginlog", // （唯一）
        component: () => import("@/views/system/loginlog/Index.vue"),
        meta: {
          title: "登录日志", // 标题
          icon: "Calendar", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/operlog", // （唯一）
        component: () => import("@/views/system/operlog/Index.vue"),
        meta: {
          title: "操作日志", // 标题
          icon: "Notebook", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
    ],
  },

  /** 测试 */
  {
    path: "/example1", // 路由访问路径（唯一）
    // name: "example", // 命名路由（唯一）
    redirect: "/example/one", // path路径，<router-link name="/404"> 也是使用path进行跳转
    component: Layout,
    meta: {
      title: "案例", // 标题
      icon: "DeleteFilled", // 图标
      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    children: [
      {
        path: "/example/one", //（唯一）
        component: () => import("@/views/example/One.vue"),
        meta: {
          title: "KoiDialog对话框", // 标题
          icon: "CircleCheckFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/example/two", //（唯一）
        component: () => import("@/views/example/Two.vue"),
        meta: {
          title: "KoiDrawer抽屉", // 标题
          icon: "CircleCheckFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/example/eight", //（唯一）
        component: () => import("@/views/example/Eight.vue"),
        meta: {
          title: "KoiIcon图标", // 标题
          icon: "Search", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/example2", // （唯一）
        redirect: "/example/three",
        // component: () => import("@/views/example/Three.vue"), // 超过三级的菜单，第三级有children不需要放置component，否则后面的都现在它的页面
        meta: {
          title: "案例2", // 标题
          icon: "WarningFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
        children: [
          {
            path: "/example/three", // （唯一）
            component: () => import("@/views/example/Three.vue"),
            meta: {
              title: "Notification通知", // 标题
              icon: "QuestionFilled", // 图标
              hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
            },
          },
          {
            path: "/example/four", // （唯一）
            component: () => import("@/views/example/Four.vue"),
            meta: {
              title: "Message消息提示", // 标题
              icon: "WarningFilled", // 图标
              hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
            },
          },
          {
            path: "/example3", // （唯一）
            redirect: "/example/five",
            // component: () => import("@/views/example/Four.vue"),
            meta: {
              title: "案例3", // 标题
              icon: "Promotion", // 图标
              hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
            },
            children: [
              {
                path: "/example/five", // （唯一）
                component: () => import("@/views/example/Five.vue"),
                meta: {
                  title: "弹出通知", // 标题
                  icon: "Management", // 图标
                  hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
                },
              },
              {
                path: "/example/six", // （唯一）
                component: () => import("@/views/example/Six.vue"),
                meta: {
                  title: "axios和storage", // 标题
                  icon: "Platform", // 图标
                  hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
                },
              },
              {
                path: "/example4", // （唯一）
                redirect: "/example/six",
                // component: () => import("@/views/example/Six.vue"),
                meta: {
                  title: "案例4", // 标题
                  icon: "TrendCharts", // 图标
                  hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
                },
                children: [
                  {
                    path: "/example/seven", // （唯一）
                    component: () => import("@/views/example/Seven.vue"),
                    meta: {
                      title: "KoiTag组件", // 标题
                      icon: "CameraFilled", // 图标
                      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
                    },
                  },
                ],
              },
            ],
          },
        ],
      },
    ], // 截止符号
  },
];

/**
 * 异步路由：根据账号分配的不同权限进行访问
 */
export const asyncRoutes: Array<RouteRecordRaw> = [
  /** 系统管理 */
  {
    path: "/system", // 路由访问路径（唯一）
    // name: "system", // 命名路由（唯一）
    component: Layout, // 一级路由，可以将子路由放置Main模块中
    redirect: "/system/user", // path路径，<router-link name="/404"> 也是使用path进行跳转
    meta: {
      title: "系统管理", // 标题
      icon: "Tools", // 图标
      hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
    },
    children: [
      {
        path: "/system/user", // （唯一）
        component: () => import("@/views/system/user/Index.vue"),
        meta: {
          title: "用户管理", // 标题
          icon: "UserFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/role", // （唯一）
        component: () => import("@/views/system/role/Index.vue"),
        meta: {
          title: "角色管理", // 标题
          icon: "CameraFilled", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/menu", // （唯一）
        component: () => import("@/views/system/menu/Index.vue"),
        meta: {
          title: "菜单管理", // 标题
          icon: "Menu", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dict/type", // （唯一）
        component: () => import("@/views/system/dict/Type.vue"),
        meta: {
          title: "字典管理", // 标题
          icon: "Management", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dict/data/:dictType", // （唯一）
        component: () => import("@/views/system/dict/Data.vue"),
        meta: {
          title: "字典详情", // 标题
          icon: "Flag", // 图标
          hidden: "0", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/dept", // （唯一）
        component: () => import("@/views/system/dept/Index.vue"),
        meta: {
          title: "部门管理", // 标题
          icon: "Histogram", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/notice", // （唯一）
        component: () => import("@/views/system/notice/Index.vue"),
        meta: {
          title: "通知公告", // 标题
          icon: "ChatLineRound", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/post", // （唯一）
        component: () => import("@/views/system/post/Index.vue"),
        meta: {
          title: "岗位管理", // 标题
          icon: "Postcard", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/loginlog", // （唯一）
        component: () => import("@/views/system/loginlog/Index.vue"),
        meta: {
          title: "登录日志", // 标题
          icon: "Calendar", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
      {
        path: "/system/operlog", // （唯一）
        component: () => import("@/views/system/operlog/Index.vue"),
        meta: {
          title: "操作日志", // 标题
          icon: "Notebook", // 图标
          hidden: "1", // 代表路由在菜单中是否隐藏，是否隐藏（0隐藏，1显示）
        },
      },
    ],
  },

];

/**
 * 静态路由 AND 异步路由拼接
 */
